/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package menu;

import utilitario.cad_produto;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import principalcontrole.principal;
import utilitario.Cliente;
import utilitario.Arquivo;
import utilitario.pedido_compra_cliente;
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import utilitario.lista_compra_cliente;


/**
 *
 * @author marcos
 */
public class Menu_Compra extends javax.swing.JFrame {

    /**
     * Creates new form Menu_Compra
     */

    principal tela_principal;
    ArrayList<Cliente> dados_cliente = new ArrayList<>();
    ArrayList<pedido_compra_cliente> pedido_de_compra = new ArrayList<>();
    ArrayList<cad_produto> produtos = new ArrayList<>();
    //=======
     pedido_compra_cliente pcc = new pedido_compra_cliente();
     lista_compra_cliente lcc;
     ArrayList<lista_compra_cliente> lista_compra = new ArrayList<>();

        //------------

          JTextField tf_novo_produto  = new JTextField();
            JLabel nova_produto  = new JLabel("Produto.:");

                      JTextField tf_nova_quantidade  = new JTextField();
                       JTextField tf_novo_desconto  = new JTextField();

             boolean verificador_produto = true;

    double valor_produto=0;
    int quant_prod_stoque=0;
    double valor_venda=0;
    double valor_compra=0;
    double desconto_prd=0;
    double sub_total=0;
    double valor_total=0;
    int cont_pedidos=1;

        SimpleDateFormat sdf1;
    Date y;

    public Menu_Compra(principal tela_principal) {
        this();
        this.tela_principal = tela_principal;
    }

    public Menu_Compra() {
        initComponents();
        initCompenents2();
    }



    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        tf_sub_total = new javax.swing.JTextField();
        tf_quantidade = new javax.swing.JTextField();
        tf_discricao = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jSeparator1 = new javax.swing.JSeparator();
        tf_nome_cliente = new javax.swing.JLabel();
        tf_cliente = new javax.swing.JTextField();
        tf_nome_cliente1 = new javax.swing.JLabel();
        tf_cpf = new javax.swing.JFormattedTextField();
        jSeparator2 = new javax.swing.JSeparator();
        jLabel1 = new javax.swing.JLabel();
        tf_desconto = new javax.swing.JTextField();
        lb_verificador = new javax.swing.JLabel();
        lb_verificador_cpf = new javax.swing.JLabel();
        lb_verificador_d = new javax.swing.JLabel();
        lb_verificador_quant = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        tf_valor_produto = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabela_compra = new javax.swing.JTable();
        jPanel5 = new javax.swing.JPanel();
        tf_total_geral = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        btn_finalizar_compra = new javax.swing.JButton();
        bt_cancelar_compra = new javax.swing.JButton();
        bt_ins_compra = new javax.swing.JButton();
        bt_nova_compra = new javax.swing.JButton();
        jPanel7 = new javax.swing.JPanel();
        tf_pedido_compra = new javax.swing.JTextField();
        bt_editar = new javax.swing.JButton();
        texto_titulo = new javax.swing.JLabel();
        img_fundo = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });
        getContentPane().setLayout(null);

        jPanel1.setOpaque(false);

        jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel4.setOpaque(false);

        tf_sub_total.setEditable(false);
        tf_sub_total.setBackground(new java.awt.Color(237, 237, 237));
        tf_sub_total.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        tf_sub_total.setForeground(new java.awt.Color(255, 0, 51));

        tf_quantidade.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        tf_quantidade.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tf_quantidadeActionPerformed(evt);
            }
        });
        tf_quantidade.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                tf_quantidadeFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                tf_quantidadeFocusLost(evt);
            }
        });
        tf_quantidade.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tf_quantidadeKeyReleased(evt);
            }
        });

        tf_discricao.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        tf_discricao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tf_discricaoActionPerformed(evt);
            }
        });
        tf_discricao.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                tf_discricaoFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                tf_discricaoFocusLost(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel2.setText("Codigo ou Discrição do item :");

        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel3.setText("Quantidade :");

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel4.setForeground(new java.awt.Color(255, 0, 51));
        jLabel4.setText("Sub Total :");

        tf_nome_cliente.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        tf_nome_cliente.setText("CPF.:");

        tf_cliente.setEditable(false);
        tf_cliente.setBackground(new java.awt.Color(237, 237, 237));
        tf_cliente.setToolTipText("");
        tf_cliente.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                tf_clienteFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                tf_clienteFocusLost(evt);
            }
        });
        tf_cliente.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                tf_clienteKeyPressed(evt);
            }
        });

        tf_nome_cliente1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        tf_nome_cliente1.setText("Nome Cliente :");

        try {
            tf_cpf.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }
        tf_cpf.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                tf_cpfFocusLost(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel1.setText("Desconto :");

        tf_desconto.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        tf_desconto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                tf_descontoKeyReleased(evt);
            }
        });

        lb_verificador.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        lb_verificador.setText("*");
        lb_verificador.setToolTipText("");

        lb_verificador_cpf.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        lb_verificador_cpf.setText("*");
        lb_verificador_cpf.setToolTipText("");

        lb_verificador_d.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        lb_verificador_d.setText("*");
        lb_verificador_d.setToolTipText("");

        lb_verificador_quant.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        lb_verificador_quant.setText("*");
        lb_verificador_quant.setToolTipText("");

        jLabel6.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel6.setText("Desconto :");

        tf_valor_produto.setEditable(false);
        tf_valor_produto.setBackground(new java.awt.Color(237, 237, 237));
        tf_valor_produto.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

        jLabel7.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel7.setText("Valor Unitario.: ");

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 731, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 731, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(tf_nome_cliente)
                        .addGap(10, 10, 10)
                        .addComponent(tf_cpf, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(5, 5, 5)
                        .addComponent(lb_verificador_cpf)
                        .addGap(17, 17, 17)
                        .addComponent(tf_nome_cliente1, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(tf_cliente, javax.swing.GroupLayout.PREFERRED_SIZE, 367, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(tf_discricao, javax.swing.GroupLayout.PREFERRED_SIZE, 271, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(lb_verificador)
                        .addGap(33, 33, 33)
                        .addComponent(jLabel3)
                        .addGap(10, 10, 10)
                        .addComponent(tf_quantidade, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(lb_verificador_quant))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel6))
                        .addGap(18, 18, 18)
                        .addComponent(tf_desconto, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(4, 4, 4)
                        .addComponent(lb_verificador_d)
                        .addGap(38, 38, 38)
                        .addComponent(jLabel7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(tf_valor_produto, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(81, 81, 81)
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(10, 10, 10)
                        .addComponent(tf_sub_total, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addGap(8, 8, 8)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(tf_nome_cliente))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(tf_cpf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(lb_verificador_cpf)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(tf_nome_cliente1))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(tf_cliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(11, 11, 11)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(6, 6, 6)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(tf_discricao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lb_verificador)
                    .addComponent(tf_quantidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lb_verificador_quant)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2)
                            .addComponent(jLabel3))))
                .addGap(11, 11, 11)
                .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(4, 4, 4)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(tf_desconto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lb_verificador_d)
                        .addComponent(tf_valor_produto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel7))
                    .addComponent(tf_sub_total, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel6)
                            .addComponent(jLabel4))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        tabela_compra.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Produto", "Quantidade", "Valor", "Desconto", "Sub Total"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane1.setViewportView(tabela_compra);

        jPanel5.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        jPanel5.setOpaque(false);

        tf_total_geral.setEditable(false);
        tf_total_geral.setBackground(new java.awt.Color(237, 237, 237));
        tf_total_geral.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        tf_total_geral.setForeground(new java.awt.Color(255, 0, 51));
        tf_total_geral.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                tf_total_geralActionPerformed(evt);
            }
        });

        jLabel5.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
        jLabel5.setForeground(new java.awt.Color(255, 0, 51));
        jLabel5.setText("Total Geral :");

        btn_finalizar_compra.setText("Finalizar compra");
        btn_finalizar_compra.setToolTipText("Finalizar compra");
        btn_finalizar_compra.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/check-64.png"))); // NOI18N
        btn_finalizar_compra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_finalizar_compraActionPerformed(evt);
            }
        });

        bt_cancelar_compra.setText("Cancelar Compra");
        bt_cancelar_compra.setToolTipText("Cancelar Compra");
        bt_cancelar_compra.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/compra.png"))); // NOI18N
        bt_cancelar_compra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_cancelar_compraActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(bt_cancelar_compra, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btn_finalizar_compra, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(75, 75, 75)
                .addComponent(jLabel5)
                .addGap(18, 18, 18)
                .addComponent(tf_total_geral, javax.swing.GroupLayout.PREFERRED_SIZE, 156, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(37, 37, 37))
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(bt_cancelar_compra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(tf_total_geral, javax.swing.GroupLayout.DEFAULT_SIZE, 45, Short.MAX_VALUE)
                        .addComponent(jLabel5))
                    .addComponent(btn_finalizar_compra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        bt_ins_compra.setText("Inserir na compra");
        bt_ins_compra.setToolTipText("Inserir na compra");
        bt_ins_compra.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/check-64.png"))); // NOI18N
        bt_ins_compra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_ins_compraActionPerformed(evt);
            }
        });

        bt_nova_compra.setText("Nova Compra");
        bt_nova_compra.setToolTipText("Nova Compra");
        bt_nova_compra.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/novos.png"))); // NOI18N
        bt_nova_compra.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_nova_compraActionPerformed(evt);
            }
        });

        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Pedido de Compra", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, new java.awt.Color(255, 0, 0)));
        jPanel7.setOpaque(false);

        tf_pedido_compra.setEditable(false);
        tf_pedido_compra.setBackground(new java.awt.Color(237, 237, 237));

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tf_pedido_compra, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tf_pedido_compra)
        );

        bt_editar.setText("Editar Compra");
        bt_editar.setToolTipText("Editar Compra");
        bt_editar.setRolloverIcon(new javax.swing.ImageIcon(getClass().getResource("/editar.png"))); // NOI18N
        bt_editar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_editarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(bt_nova_compra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(bt_ins_compra, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(37, 37, 37)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(bt_editar, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(47, 47, 47))
                    .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(25, 25, 25)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(bt_editar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(bt_ins_compra, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE))
                        .addGap(13, 13, 13)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(bt_nova_compra, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(19, 19, 19)
                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(24, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Menu de vendas", jPanel1);

        getContentPane().add(jTabbedPane1);
        jTabbedPane1.setBounds(20, 160, 760, 410);

        texto_titulo.setFont(new java.awt.Font("Cooper Black", 0, 36)); // NOI18N
        texto_titulo.setForeground(new java.awt.Color(0, 204, 51));
        texto_titulo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/compra.png"))); // NOI18N
        texto_titulo.setText("Menu de Compra");
        getContentPane().add(texto_titulo);
        texto_titulo.setBounds(230, 50, 460, 90);

        img_fundo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/fundo_fornecedor.png"))); // NOI18N
        img_fundo.setText("jLabel1");
        getContentPane().add(img_fundo);
        img_fundo.setBounds(0, 0, 810, 590);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-823)/2, (screenSize.height-630)/2, 823, 630);
    }// </editor-fold>//GEN-END:initComponents

    private void initCompenents2(){

       tf_novo_desconto.addKeyListener(new java.awt.event.KeyAdapter(){
                      @Override
                     public void keyReleased(java.awt.event.KeyEvent evt) {
                          tf_novo_descontoKeyReleased(evt);
                    }
            });


    }
    private void tf_total_geralActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tf_total_geralActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_tf_total_geralActionPerformed

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
        // TODO add your handling code here:
        tela_principal.setEnabled(true);
        Thread t = new Thread(tela_principal);
        t.start();
    }//GEN-LAST:event_formWindowClosed


    private void tf_discricaoFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_discricaoFocusLost
        // TODO add your handling code here:
     busca_produtos();

    }//GEN-LAST:event_tf_discricaoFocusLost

    private void tf_quantidadeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_quantidadeFocusLost
        // TODO add your handling code here:

    }//GEN-LAST:event_tf_quantidadeFocusLost

    private void tf_quantidadeFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_quantidadeFocusGained
        // TODO add your handling code here:

    }//GEN-LAST:event_tf_quantidadeFocusGained

    void busca_cliente(){


         dados_cliente = Arquivo.lerCliente();

       boolean verificador_cliente = true;

       if(dados_cliente.isEmpty()){

        JOptionPane.showMessageDialog(null,"Nao tem nenhum cliente cadastrado");
        lb_verificador_cpf.setForeground(Color.red);
       }

      for(int i = 0 ; i < dados_cliente.size(); i++){

          if(dados_cliente.get(i).getCpf().equalsIgnoreCase(tf_cpf.getText())){
              System.out.println("Usuario cadastrado...");
              tf_cliente.setText(dados_cliente.get(i).getNome());

              verificador_cliente = true;
               break;

          }
          else {

           verificador_cliente = false;

         }
      }

      if(verificador_cliente == false){

       JOptionPane.showMessageDialog(null, "esse cliente nao existe");
           lb_verificador_cpf.setForeground(Color.red);
           tf_cpf.setText(null);

      }




    }
    void calulo_do_desconto(){

    double diferencial = valor_venda - valor_compra ;

    desconto_prd =(diferencial * 3)/ 100;


    }

    void busca_produtos(){

          ler_arquivo_produtos();


       boolean verificador_produto = true;

       if(produtos.isEmpty()){

       JOptionPane.showMessageDialog(null,"Nao tem nenhum produto cadastrado");
       lb_verificador.setForeground(Color.red);
       tf_discricao.setText("");
       lb_verificador.setToolTipText("Discrição Invalida!!");

       }
       for(int i = 0; i < produtos.size(); i++){

           if((produtos.get(i).getCodigo().equalsIgnoreCase(tf_discricao.getText())) || (produtos.get(i).getNome().equalsIgnoreCase(tf_discricao.getText()))){

                 System.out.println("Produto cadastrado...");
                 valor_produto = produtos.get(i).getPre_venda();
                 tf_valor_produto.setText(""+valor_produto);
                 quant_prod_stoque = produtos.get(i).getQuantidade();
                 valor_venda  = produtos.get(i).getPre_venda();
                 valor_compra  = produtos.get(i).getPre_compra();
                 verificador_produto = true;
                 break;

           }else{
               verificador_produto = false;
           }

       }
        if(verificador_produto == false){
           JOptionPane.showMessageDialog(null, "esse produto nao existe");
            lb_verificador.setForeground(Color.red);
            tf_discricao.setText("");

      }

    calulo_do_desconto();
    }


    private void tf_discricaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tf_discricaoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_tf_discricaoActionPerformed

    private void tf_discricaoFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_discricaoFocusGained
        // TODO add your handling code here:    tf_discricao.setFocusable(true);


    }//GEN-LAST:event_tf_discricaoFocusGained

    private void tf_clienteFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_clienteFocusGained
        // TODO add your handling code here:
    }//GEN-LAST:event_tf_clienteFocusGained

    private void tf_clienteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_clienteFocusLost
        // TODO add your handling code here:
    }//GEN-LAST:event_tf_clienteFocusLost

    private void tf_clienteKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tf_clienteKeyPressed
        // TODO add your handling code here:
    }//GEN-LAST:event_tf_clienteKeyPressed

    private void tf_cpfFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tf_cpfFocusLost
        // TODO add your handling code here:
        busca_cliente();
    }//GEN-LAST:event_tf_cpfFocusLost

    private void bt_ins_compraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_ins_compraActionPerformed
        // TODO add your handling code here:
        DefaultTableModel dtm = (DefaultTableModel) tabela_compra.getModel();
        lcc = new lista_compra_cliente("",0,0,0,0);
        boolean continuar = true;


        if(tf_discricao.getText().equalsIgnoreCase("")){

        JOptionPane.showMessageDialog(null,"O campo de Discrição do produto esta vazio!!");
        continuar= false;

        }
        if(tf_quantidade.getText().equalsIgnoreCase("")){

        JOptionPane.showMessageDialog(null,"O campo de Quantidade do produto esta vazio!!");
        continuar= false;

        }
        if(tf_desconto.getText().equalsIgnoreCase("")){

        JOptionPane.showMessageDialog(null,"O campo de desconto do produto esta vazio!!");
        continuar= false;

        }
        if(Double.parseDouble(tf_desconto.getText()) > desconto_prd){

            JOptionPane.showMessageDialog(null,"Desconto Invalido!!");
            lb_verificador_d.setToolTipText("Desconto Invalido");
            lb_verificador_d.setForeground(Color.red);
            tf_desconto.setText("");
            continuar= false;

        }

        if(Integer.parseInt(tf_quantidade.getText()) > quant_prod_stoque){

            JOptionPane.showMessageDialog(null,"O Produto esta em Falta.. (Estoque do Produto = "+quant_prod_stoque+" )");
            lb_verificador_quant.setToolTipText("Quantidade Invalido");
            lb_verificador_quant.setForeground(Color.red);
            tf_quantidade.setText("");
            continuar= false;
        }

        if(continuar== true){

            int quant = dtm.getRowCount();
            boolean verifica_igual = true;


            for(int i = 0 ; i< quant; i++){

                if(tf_discricao.getText().equalsIgnoreCase(tabela_compra.getValueAt(i, 0).toString())){

                       int nova_quantidade = Integer.parseInt(tabela_compra.getValueAt(i, 1).toString());
                       nova_quantidade += Integer.parseInt(tf_quantidade.getText());
                       sub_total = (nova_quantidade*(valor_produto-Double.parseDouble(tf_desconto.getText())));
                       tabela_compra.setValueAt((nova_quantidade*(valor_produto-Double.parseDouble(tf_desconto.getText()))), i, 4);
                       tabela_compra.setValueAt(nova_quantidade, i, 1);
                       valor_total += sub_total;
                       tf_sub_total.setText(""+sub_total);
                       tf_total_geral.setText(""+valor_total);
                       verifica_igual = false;
                       break;

                }


            }


            //add os produtos na tabela
            if(verifica_igual!= false){


            double desconto_cliente = Double.parseDouble(tf_desconto.getText());
            sub_total = ((valor_produto - desconto_cliente) *  Integer.parseInt(tf_quantidade.getText()));//pegando o subtotal dos produtos
            valor_total += sub_total;//pegando o valor total da compra
            tf_total_geral.setText(""+valor_total);
            tf_sub_total.setText(""+sub_total);//setando o sub total na tela
            dtm.addRow(new Object[] {tf_discricao.getText(),tf_quantidade.getText(),valor_produto,tf_desconto.getText(),sub_total});

            }



            //pegando lista de produto
            lcc.setNome_produto(tf_discricao.getText());
            lcc.setQuantidade(Integer.parseInt(tf_quantidade.getText()));
            lcc.setValor_unitario(valor_produto);
            lcc.setSubtotal(sub_total);
            lcc.setDesconto(Double.parseDouble(tf_desconto.getText()));

        }

        sub_total=0.0;
        tf_sub_total.setText(""+sub_total);

    }//GEN-LAST:event_bt_ins_compraActionPerformed

    void carregar_lista_compra(){
    ArrayList<pedido_compra_cliente>p ;
    p = Arquivo.ler_pedidoCompra();

    for(int i = 0; i< p.size(); i++ ){

        if(p.get(i).getLista_compra().isEmpty()){

        break;
        }else{
           lista_compra = p.get(i).getLista_compra();}



    }





    }
    void limpa_todos_campos(){

        tf_cpf.setText(null);
        tf_cliente.setText("");
        tf_sub_total.setText(""+0.0);
        tf_valor_produto.setText("");
        tf_discricao.setText("");
        tf_quantidade.setText("");
        tf_desconto.setText("");
        tf_total_geral.setText(""+0.0);


    }
    private void bt_nova_compraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_nova_compraActionPerformed
        // TODO add your handling code here:ca
        tf_discricao.setText("");
        tf_quantidade.setText("");
        tf_desconto.setText("");
        tf_valor_produto.setText("");
    }//GEN-LAST:event_bt_nova_compraActionPerformed

    private void tf_descontoKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tf_descontoKeyReleased
        // TODO add your handling code here:
        tf_desconto.setText(tf_desconto.getText().replaceAll("[^0-9 | .]", ""));
    }//GEN-LAST:event_tf_descontoKeyReleased

    private void tf_quantidadeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tf_quantidadeActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_tf_quantidadeActionPerformed

    private void tf_quantidadeKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tf_quantidadeKeyReleased
        // TODO add your handling code here:
           tf_quantidade.setText(tf_quantidade.getText().replaceAll("[^0-9 ]", ""));
    }//GEN-LAST:event_tf_quantidadeKeyReleased

    private void tf_nova_quantidadeKeyReleased(java.awt.event.KeyEvent evt) {
        // TODO add your handling code here:
           tf_nova_quantidade.setText(tf_nova_quantidade.getText().replaceAll("[^0-9 ]", ""));
    }

    private void tf_novo_descontoKeyReleased(java.awt.event.KeyEvent evt) {
        // TODO add your handling code here:
           tf_novo_desconto.setText(tf_novo_desconto.getText().replaceAll("[^0-9 | .]", ""));
    }

    private void bt_editarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_editarActionPerformed
        // TODO add your handling code here:
        int linha_selecionada = tabela_compra.getSelectedRow();
        boolean continuar = true;


        if(linha_selecionada != -1){



            JPanel tela = new JPanel();
            tf_novo_produto.setColumns(8);
            tf_novo_desconto.setColumns(8);
            JLabel nova_desconto  = new JLabel("Desconto.:");
            tf_nova_quantidade.setColumns(8);
            //criando um envendo key para tf_quantidade nao deixando digitar letra
            tf_nova_quantidade.addKeyListener(new java.awt.event.KeyAdapter(){
                      @Override
                     public void keyReleased(java.awt.event.KeyEvent evt) {
                          tf_nova_quantidadeKeyReleased(evt);
                    }
            });

            JLabel nova_quant  = new JLabel("Quantidade.:");
            tela.setLayout(new GridLayout(3,3));


            tela.add(nova_produto);
            tela.add(tf_novo_produto);
            tela.add(nova_desconto);
            tela.add(tf_novo_desconto);
            tela.add(nova_quant);
            tela.add(tf_nova_quantidade);

                 JOptionPane.showMessageDialog(rootPane, tela);

                 busca_produto_edtitar();

                 calulo_do_desconto();

        if(tf_novo_produto.getText().isEmpty() && tf_nova_quantidade.getText().isEmpty() && tf_novo_desconto.getText().isEmpty()){

        continuar = false;



        }

  if(continuar == true){
            while(verificador_produto == false){

                      JOptionPane.showMessageDialog(null, "esse prodoto nao existe");
                      JOptionPane.showMessageDialog(rootPane, tela);
                      busca_produto_edtitar();

            }

            while(Integer.parseInt(tf_nova_quantidade.getText()) > quant_prod_stoque ||  verificador_produto == false){

                      JOptionPane.showMessageDialog(null, "Quantidade de produto insuficiente");
                      JOptionPane.showMessageDialog(rootPane, tela);
                      busca_produto_edtitar();

            }

            while(Double.parseDouble(tf_novo_desconto.getText()) > desconto_prd || verificador_produto == false || Integer.parseInt(tf_nova_quantidade.getText()) > quant_prod_stoque ){

                  if(Integer.parseInt(tf_nova_quantidade.getText()) > quant_prod_stoque ){

                             JOptionPane.showMessageDialog(null, "Quantidade de produto insuficiente");
                             JOptionPane.showMessageDialog(rootPane, tela);
                             busca_produto_edtitar();
                  }else{
                             JOptionPane.showMessageDialog(null, "Desconto invalido");
                             JOptionPane.showMessageDialog(rootPane, tela);
                             busca_produto_edtitar();}

            }




                         int nova_quanti = Integer.parseInt(tf_nova_quantidade.getText());
                         sub_total = nova_quanti *(Double.parseDouble(tabela_compra.getValueAt(linha_selecionada, 2).toString())-Double.parseDouble(tf_novo_desconto.getText()));

                         tf_sub_total.setText(""+sub_total);

                          tabela_compra.setValueAt(sub_total, linha_selecionada, 4);
                          tabela_compra.setValueAt(tf_novo_produto.getText(), linha_selecionada, 0);
                          tabela_compra.setValueAt(tf_nova_quantidade.getText(), linha_selecionada, 1);
                          tabela_compra.setValueAt(tf_novo_desconto.getText(), linha_selecionada, 3);
                          valor_total = 0.0;

                             for(int i = 0 ; i < tabela_compra.getRowCount(); i++){

                                   valor_total = valor_total + Double.parseDouble(tabela_compra.getValueAt(i, 4).toString());


                             }

                          tf_total_geral.setText(""+valor_total);
                 }

        }else{

        JOptionPane.showMessageDialog(null,"Porfavor , Selecione uma linha da tabela");

        }
    }//GEN-LAST:event_bt_editarActionPerformed


    private void btn_finalizar_compraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_finalizar_compraActionPerformed
        // TODO add your handling code here:qua

        int quantidade_de_linhas = tabela_compra.getRowCount(); //pegando a quantidade de linhas da tabela
        DefaultTableModel dtm = (DefaultTableModel) tabela_compra.getModel();

        ArrayList<pedido_compra_cliente>p ;
        p = Arquivo.ler_pedidoCompra(); // lendo do arquivo
        int linha = p.size();
        boolean continuar = true;
        for(int i = 0 ; i < quantidade_de_linhas; i++){
                            lista_compra.add(new lista_compra_cliente(dtm.getValueAt(i, 0).toString(),
                            Integer.parseInt(dtm.getValueAt(i, 1).toString() ),
                            Double.parseDouble( dtm.getValueAt(i, 2).toString()),
                            Double.parseDouble( dtm.getValueAt(i, 3).toString()),
                            Double.parseDouble( dtm.getValueAt(i, 4).toString())));
        }


           //chamando o metodo que vai verificar tadas quantidade do produtos na lista compra
            verificar_quantidade();

            tf_pedido_compra.setText(""+cont_pedidos);
             //pegando a data de  compra
            sdf1= new SimpleDateFormat("dd/MM/yyyy"); //você pode usar outras máscaras
            y=new Date();
            Calendar cal = Calendar.getInstance();
            cal.setTime(y);

             //add os dados no arraylist de compra
            pcc.setPedido_compra(cont_pedidos);
            pcc.setNome_cliente(tf_cliente.getText());
            pcc.setData_de_compra(cal);
            pcc.setValor_total(Double.parseDouble(tf_total_geral.getText()));
            pcc.setLista_compra(lista_compra);

             //add a lista de compra no pedido compra cliente

            for(int i = 0 ; i < lista_compra.size(); i++){

            }

            p.add(pcc);

            pedido_de_compra.add(pcc);

            limpa_todos_campos();

            Arquivo.amarzenarPedidoCompra(p);
            lista_compra.clear();
            dtm.setNumRows(0);
            cont_pedidos++;
            valor_total = 0;




    }//GEN-LAST:event_btn_finalizar_compraActionPerformed

    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        // TODO add your handling code here:
               ArrayList<pedido_compra_cliente> p;


         //lendo o pedido de compra
          p = Arquivo.ler_pedidoCompra();

           int linha = p.size();
          //verificando se a listaa de pedidos de compra e vazia
         if(p.isEmpty()) {

             cont_pedidos = 1;
             tf_pedido_compra.setText(""+cont_pedidos);

         }else{
                   cont_pedidos = p.get(linha-1).getPedido_compra();
                   cont_pedidos++;
                   tf_pedido_compra.setText(""+cont_pedidos);

         }


       //colocando o valor geral como 0
        tf_total_geral.setText(""+0);

    }//GEN-LAST:event_formWindowOpened


    private void bt_cancelar_compraActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bt_cancelar_compraActionPerformed
        // TODO add your handling code here:
          DefaultTableModel dtm = (DefaultTableModel) tabela_compra.getModel();
          dtm.setNumRows(0);
          limpa_todos_campos();
          ArrayList<pedido_compra_cliente>p ;
          p = Arquivo.ler_pedidoCompra();
          p.clear();
    }//GEN-LAST:event_bt_cancelar_compraActionPerformed

 void verificar_quantidade(){

   boolean continuar = true;
  DefaultTableModel dtm = (DefaultTableModel) tabela_compra.getModel();

  int quantidade = dtm.getRowCount();

    for(int i = 0 ; i < quantidade; i++){

        for(int j = 0 ; j < produtos.size(); j++){


            if(dtm.getValueAt(i, 0).equals(produtos.get(j).getNome())){

                if(Integer.parseInt(dtm.getValueAt(i, 1).toString()) > produtos.get(j).getQuantidade()){

                       JOptionPane.showMessageDialog(null,"O Produto "+produtos.get(j).getNome()+" esta em Falta.. (Estoque do Produto = "+produtos.get(j).getQuantidade()+" )");

                    while(continuar == true){

                        try{

                            int nova_quant = Integer.parseInt(JOptionPane.showInputDialog("Digite a nova quantidade"));

                                if(nova_quant > produtos.get(j).getQuantidade() ){
                                continuar = true;
                                }
                                else{
                                dtm.setValueAt(nova_quant, i, 1);
                                dtm.setValueAt((nova_quant * (Double.parseDouble(dtm.getValueAt(i, 2).toString())) - Double.parseDouble(dtm.getValueAt(i, 3).toString())), i, 4);

                                // calcular subtoal ainda
                                continuar = false;
                                }


                        }catch(HeadlessException | NumberFormatException erro){

                               JOptionPane.showMessageDialog(null,"Digite apenas numeros inteiros");

                        }



                    }//fim do while
                    continuar = true;


                } //fim do if de verificaçao de quantidade

            }  //fim do if de verificao do produto




        }//fim do for do arraylist produtos



    }//fim do for da tabela



 }

  void busca_produto_edtitar(){




 for(int i = 0; i < produtos.size(); i++){

                        if((produtos.get(i).getCodigo().equalsIgnoreCase(tf_novo_produto.getText())) || (produtos.get(i).getNome().equalsIgnoreCase(tf_novo_produto.getText()))){

                              System.out.println("Produto cadastrado...");
                              valor_produto = produtos.get(i).getPre_venda();
                              tf_valor_produto.setText(""+valor_produto);
                              quant_prod_stoque = produtos.get(i).getQuantidade();
                              valor_venda  = produtos.get(i).getPre_venda();
                              valor_compra  = produtos.get(i).getPre_compra();


                              verificador_produto = true;
                              break;

                            }else{
                                verificador_produto = false;
                            }

                      }


  }
    void ler_arquivo_produtos(){


   try{

       ObjectInputStream ler_produto = new ObjectInputStream(new FileInputStream ( new File ("docs/Estoque.bat")));
       produtos = (ArrayList) ler_produto.readObject();

   }catch(IOException | ClassNotFoundException erro){

    System.out.println("erro ao ler");

   }


    }


    void gravar_lista_compra(ArrayList<lista_compra_cliente> a) throws IOException{
        try {
            ObjectOutputStream  obj = new ObjectOutputStream (new FileOutputStream(new File("docs/lista_de_compra.dat")));
            try {
                obj.writeObject(a);
            } catch (IOException ex) {
                Logger.getLogger(Menu_Compra.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Menu_Compra.class.getName()).log(Level.SEVERE, null, ex);
        }




    }



   public ArrayList<lista_compra_cliente> ler_lista_compra() throws IOException{

          ArrayList<lista_compra_cliente> a =new ArrayList<>();
           try {
            FileInputStream fis = new FileInputStream("docs/lista_de_compra.dat");
            try {
                ObjectInputStream obj = new ObjectInputStream(fis);
                System.out.println("Lendo arquivo");
                return((ArrayList<lista_compra_cliente>) obj.readObject());
            } catch (   ClassNotFoundException | IOException ex) {
                Logger.getLogger(Arquivo.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            System.out.println("Não foi encontrado o arquivo");
           gravar_lista_compra(a);
            return a;
        }
        return a;







      }



    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Menu_Compra.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Menu_Compra.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Menu_Compra.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Menu_Compra.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Menu_Compra().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton bt_cancelar_compra;
    private javax.swing.JButton bt_editar;
    private javax.swing.JButton bt_ins_compra;
    private javax.swing.JButton bt_nova_compra;
    private javax.swing.JButton btn_finalizar_compra;
    private javax.swing.JLabel img_fundo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JLabel lb_verificador;
    private javax.swing.JLabel lb_verificador_cpf;
    private javax.swing.JLabel lb_verificador_d;
    private javax.swing.JLabel lb_verificador_quant;
    private javax.swing.JTable tabela_compra;
    private javax.swing.JLabel texto_titulo;
    private javax.swing.JTextField tf_cliente;
    private javax.swing.JFormattedTextField tf_cpf;
    private javax.swing.JTextField tf_desconto;
    private javax.swing.JTextField tf_discricao;
    private javax.swing.JLabel tf_nome_cliente;
    private javax.swing.JLabel tf_nome_cliente1;
    private javax.swing.JTextField tf_pedido_compra;
    private javax.swing.JTextField tf_quantidade;
    private javax.swing.JTextField tf_sub_total;
    private javax.swing.JTextField tf_total_geral;
    private javax.swing.JTextField tf_valor_produto;
    // End of variables declaration//GEN-END:variables
}
